Embodiments of the inventive subject matter generally relate to the fields of information security and data processing.
Traditional methods for securing data rely on encryption keys. For example, symmetric key encryption and public key encryption utilize keys as an input to an encryption algorithm. Early technologies utilized one-time pad solutions, in which a secret random key is used to encrypt plaintext and decrypt cipher-text using a pre-shared secret random key (or pad). Block ciphers utilizing a symmetric key also require identical keys used for encryption and decryption. The strength of symmetric key algorithms depends on the length, randomness and exchange process associated with the symmetric key. A stream cipher is similar to symmetric key cipher and uses a symmetric key combined with a pseudorandom cipher digit stream (key stream). The encryption of each digit is dependent on the current key in a series of keys. The keys change in a serial rotation based upon a random seed value. Symmetric key systems and stream ciphers are plagued with problems associated with generating random seeds or keys and key exchange.
More recent methods of securing data rely upon substitutions and permutations of block data. A substitution-permutation network (SPN) is a technique in cryptography which requires multiple rounds of block cipher algorithms involving substitutions and permutations of input data at each round. At each round of the substitutions and permutations, a “round key” may be used. The round key is typically a variant of a starting key which is modified in a predictable way (for example using substitutions and/or permutations) for each round. In a variation of substation-permutation network, product ciphers combine two or more transformations in a predetermined algorithm. Feistel ciphers are a type of product cipher in which an iterated cipher uses an internal function called a round function in conjunction with a series of sub-keys for each round. Even for SPNs, Feistel ciphers, or other product ciphers, an initial key or seed must be determined and exchanged.
Some cryptographic hash functions avoid the problems associated with keys by iteratively hashing blocks of binary data. A cryptographic hash algorithm is a widely-used tool that creates a “fingerprint”, or a “message digest” of a file, message or block of data that can be used for digital signatures, message authentication codes, and many other security applications in the information infrastructure. For example, secure hash algorithms (SHA) or other cryptographic hash algorithms simply hash bits from the source data in multiple rounds. The source data is segmented into blocks (e.g. 512 bits or 1024 bits) and the cryptographic hash is performed multiple times for each block.
Improvements to cryptography would allow for the secure storage or transmission of data.